Containers are specially-designed processes into which a number of applications are loaded and in which they are able to be processed. Containers are known per se to persons skilled in the art.
Combining the applications into application groups defines which application interacts with which other application in which manner. This relates in particular to data exchange and to how the applications call each other The combining of applications into application groups is also known to persons skilled in the art.
A sequence of application groups is a succession of application groups. A respective application group is generally terminated as a result of a corresponding entry by the user. In this case the transition to the respective next application group is automatic or the sequence is ended automatically in the case of the last application group. Sequences of application groups are also known to persons skilled in the art.
The topics discussed above are generally known. They are employed in many areas of work, including the entry, editing and analysis of the data of medical imaging systems (known as medical modalities).
Medical modalities generate ever greater volumes of data during patient examinations. These volumes of data are analyzed by doctors in order to create patient diagnoses. Highly-specialized medical software applications (=complex tasks within the meaning of the present invention) which can present the data volumes in a suitable form for the doctor are used for the analysis.
The software applications are only of advantage for the doctors if they perform outstandingly well. In particular the functionalities of data loading and data processing must run without perceptible delays. Only then will the doctors recognize the advantage of using the software applications in diagnosis.
The volumes of data to be processed by the applications are becoming ever larger. Processing them and loading them therefore demands even more time. The problem of performance optimization thus arises.
In the known systems the complex tasks are generally processed on servers. Servers exist for medical applications which especially include the computing-intensive business logic of the complex tasks.
In the known systems performance optimizations for these types of servers have generally been restricted to what is referred to as farming. In farming a number of physical servers will be used on which the same software always runs. A specific device—known as the load balancer—interrogates each respective server as to its current load. All queries to the community of the servers are first accepted by the load balancer which then forwards them to that server which has the smallest load at this point in time. Farming thus allows a performance improvement to be achieved by virtue of a number of servers processing the complex tasks of the user in parallel with optimum load distribution.
Performance optimizations within a server or generally within a computer are less well-known. In many cases they are not comprehensive but only cover a specific area in the server/computer. Thus for example in the older German patent application “Verfahren zur Verringerung der Wartezeit bei erstmaliger Durchführung von Arbeitsschritten” (“Method for reducing the waiting time when operating steps are first executed”) of Siemens AG, official file reference at the German patent and trademark office 10 2009 043 253.1, application date Sep. 28, 2009, the entire contents of which are hereby incorporated herein by reference, an operating method for a computer is explained in which the computer starts processes embodied as containers although the process is not yet requested by a user and loads into the containers applications which are likely to be needed by the user.
The cited German patent application has not as yet been published on the day of application of the present invention and does not therefore represent any generally known prior art.
Each process created and administered by the operating system of the computer will be allocated resources of the computer by the operating system. This applies regardless of whether the process is embodied as a container or not. It is thus of advantage to keep the number of processes as low as possible. From the standpoint of resource optimization it would therefore be optimal to load as many applications as possible into a single container.
The more applications are loaded into a single container the more complex is the design of the container-internal administration of the applications. The operating behavior of the container also becomes more unstable. From the standpoint of container-internal complexity and stability it would thus be optimal to load as few applications as possible into each container, in an extreme case only a single application.
When an application is loaded into the container, loading (=starting) the application demands a certain time. Likewise ending (=terminating) the application needs a certain time. Starting the application for the first time can (obviously) not be avoided. It is however more efficient for the application not to be terminated later but only to be suspended so that it can be resumed (=resume) later. The terms “suspend” and “resume” have a rigidly-defined meaning for a person skilled in the art of computing.
There are applications for which suspend and resume are not possible. These types of applications must always be terminated and restarted later if necessary. However in many cases a suspend-resume cycle is basically possible. Whether a suspend-resume cycle is possible in concrete terms can however depend on further factors. In particular the question can depend on whether and if necessary which other applications are loaded into the same container and how the applications interact with one another.